↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
div_in(X, s(Y), Z) → U3(X, Y, Z, le_in(s(Y), X, B))
le_in(s(X), s(Y), B) → U1(X, Y, B, le_in(X, Y, B))
le_in(s(X), 0, false) → le_out(s(X), 0, false)
le_in(0, Y, true) → le_out(0, Y, true)
U1(X, Y, B, le_out(X, Y, B)) → le_out(s(X), s(Y), B)
U3(X, Y, Z, le_out(s(Y), X, B)) → U4(X, Y, Z, if_in(B, X, s(Y), Z))
if_in(true, X, s(Y), s(Z)) → U5(X, Y, Z, minus_in(X, Y, U))
minus_in(s(X), s(Y), Z) → U2(X, Y, Z, minus_in(X, Y, Z))
minus_in(X, 0, X) → minus_out(X, 0, X)
U2(X, Y, Z, minus_out(X, Y, Z)) → minus_out(s(X), s(Y), Z)
U5(X, Y, Z, minus_out(X, Y, U)) → U6(X, Y, Z, div_in(U, s(Y), Z))
U6(X, Y, Z, div_out(U, s(Y), Z)) → if_out(true, X, s(Y), s(Z))
if_in(false, X, s(Y), 0) → if_out(false, X, s(Y), 0)
U4(X, Y, Z, if_out(B, X, s(Y), Z)) → div_out(X, s(Y), Z)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PrologToPiTRSProof
div_in(X, s(Y), Z) → U3(X, Y, Z, le_in(s(Y), X, B))
le_in(s(X), s(Y), B) → U1(X, Y, B, le_in(X, Y, B))
le_in(s(X), 0, false) → le_out(s(X), 0, false)
le_in(0, Y, true) → le_out(0, Y, true)
U1(X, Y, B, le_out(X, Y, B)) → le_out(s(X), s(Y), B)
U3(X, Y, Z, le_out(s(Y), X, B)) → U4(X, Y, Z, if_in(B, X, s(Y), Z))
if_in(true, X, s(Y), s(Z)) → U5(X, Y, Z, minus_in(X, Y, U))
minus_in(s(X), s(Y), Z) → U2(X, Y, Z, minus_in(X, Y, Z))
minus_in(X, 0, X) → minus_out(X, 0, X)
U2(X, Y, Z, minus_out(X, Y, Z)) → minus_out(s(X), s(Y), Z)
U5(X, Y, Z, minus_out(X, Y, U)) → U6(X, Y, Z, div_in(U, s(Y), Z))
U6(X, Y, Z, div_out(U, s(Y), Z)) → if_out(true, X, s(Y), s(Z))
if_in(false, X, s(Y), 0) → if_out(false, X, s(Y), 0)
U4(X, Y, Z, if_out(B, X, s(Y), Z)) → div_out(X, s(Y), Z)
DIV_IN(X, s(Y), Z) → U31(X, Y, Z, le_in(s(Y), X, B))
DIV_IN(X, s(Y), Z) → LE_IN(s(Y), X, B)
LE_IN(s(X), s(Y), B) → U11(X, Y, B, le_in(X, Y, B))
LE_IN(s(X), s(Y), B) → LE_IN(X, Y, B)
U31(X, Y, Z, le_out(s(Y), X, B)) → U41(X, Y, Z, if_in(B, X, s(Y), Z))
U31(X, Y, Z, le_out(s(Y), X, B)) → IF_IN(B, X, s(Y), Z)
IF_IN(true, X, s(Y), s(Z)) → U51(X, Y, Z, minus_in(X, Y, U))
IF_IN(true, X, s(Y), s(Z)) → MINUS_IN(X, Y, U)
MINUS_IN(s(X), s(Y), Z) → U21(X, Y, Z, minus_in(X, Y, Z))
MINUS_IN(s(X), s(Y), Z) → MINUS_IN(X, Y, Z)
U51(X, Y, Z, minus_out(X, Y, U)) → U61(X, Y, Z, div_in(U, s(Y), Z))
U51(X, Y, Z, minus_out(X, Y, U)) → DIV_IN(U, s(Y), Z)
div_in(X, s(Y), Z) → U3(X, Y, Z, le_in(s(Y), X, B))
le_in(s(X), s(Y), B) → U1(X, Y, B, le_in(X, Y, B))
le_in(s(X), 0, false) → le_out(s(X), 0, false)
le_in(0, Y, true) → le_out(0, Y, true)
U1(X, Y, B, le_out(X, Y, B)) → le_out(s(X), s(Y), B)
U3(X, Y, Z, le_out(s(Y), X, B)) → U4(X, Y, Z, if_in(B, X, s(Y), Z))
if_in(true, X, s(Y), s(Z)) → U5(X, Y, Z, minus_in(X, Y, U))
minus_in(s(X), s(Y), Z) → U2(X, Y, Z, minus_in(X, Y, Z))
minus_in(X, 0, X) → minus_out(X, 0, X)
U2(X, Y, Z, minus_out(X, Y, Z)) → minus_out(s(X), s(Y), Z)
U5(X, Y, Z, minus_out(X, Y, U)) → U6(X, Y, Z, div_in(U, s(Y), Z))
U6(X, Y, Z, div_out(U, s(Y), Z)) → if_out(true, X, s(Y), s(Z))
if_in(false, X, s(Y), 0) → if_out(false, X, s(Y), 0)
U4(X, Y, Z, if_out(B, X, s(Y), Z)) → div_out(X, s(Y), Z)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PrologToPiTRSProof
DIV_IN(X, s(Y), Z) → U31(X, Y, Z, le_in(s(Y), X, B))
DIV_IN(X, s(Y), Z) → LE_IN(s(Y), X, B)
LE_IN(s(X), s(Y), B) → U11(X, Y, B, le_in(X, Y, B))
LE_IN(s(X), s(Y), B) → LE_IN(X, Y, B)
U31(X, Y, Z, le_out(s(Y), X, B)) → U41(X, Y, Z, if_in(B, X, s(Y), Z))
U31(X, Y, Z, le_out(s(Y), X, B)) → IF_IN(B, X, s(Y), Z)
IF_IN(true, X, s(Y), s(Z)) → U51(X, Y, Z, minus_in(X, Y, U))
IF_IN(true, X, s(Y), s(Z)) → MINUS_IN(X, Y, U)
MINUS_IN(s(X), s(Y), Z) → U21(X, Y, Z, minus_in(X, Y, Z))
MINUS_IN(s(X), s(Y), Z) → MINUS_IN(X, Y, Z)
U51(X, Y, Z, minus_out(X, Y, U)) → U61(X, Y, Z, div_in(U, s(Y), Z))
U51(X, Y, Z, minus_out(X, Y, U)) → DIV_IN(U, s(Y), Z)
div_in(X, s(Y), Z) → U3(X, Y, Z, le_in(s(Y), X, B))
le_in(s(X), s(Y), B) → U1(X, Y, B, le_in(X, Y, B))
le_in(s(X), 0, false) → le_out(s(X), 0, false)
le_in(0, Y, true) → le_out(0, Y, true)
U1(X, Y, B, le_out(X, Y, B)) → le_out(s(X), s(Y), B)
U3(X, Y, Z, le_out(s(Y), X, B)) → U4(X, Y, Z, if_in(B, X, s(Y), Z))
if_in(true, X, s(Y), s(Z)) → U5(X, Y, Z, minus_in(X, Y, U))
minus_in(s(X), s(Y), Z) → U2(X, Y, Z, minus_in(X, Y, Z))
minus_in(X, 0, X) → minus_out(X, 0, X)
U2(X, Y, Z, minus_out(X, Y, Z)) → minus_out(s(X), s(Y), Z)
U5(X, Y, Z, minus_out(X, Y, U)) → U6(X, Y, Z, div_in(U, s(Y), Z))
U6(X, Y, Z, div_out(U, s(Y), Z)) → if_out(true, X, s(Y), s(Z))
if_in(false, X, s(Y), 0) → if_out(false, X, s(Y), 0)
U4(X, Y, Z, if_out(B, X, s(Y), Z)) → div_out(X, s(Y), Z)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
MINUS_IN(s(X), s(Y), Z) → MINUS_IN(X, Y, Z)
div_in(X, s(Y), Z) → U3(X, Y, Z, le_in(s(Y), X, B))
le_in(s(X), s(Y), B) → U1(X, Y, B, le_in(X, Y, B))
le_in(s(X), 0, false) → le_out(s(X), 0, false)
le_in(0, Y, true) → le_out(0, Y, true)
U1(X, Y, B, le_out(X, Y, B)) → le_out(s(X), s(Y), B)
U3(X, Y, Z, le_out(s(Y), X, B)) → U4(X, Y, Z, if_in(B, X, s(Y), Z))
if_in(true, X, s(Y), s(Z)) → U5(X, Y, Z, minus_in(X, Y, U))
minus_in(s(X), s(Y), Z) → U2(X, Y, Z, minus_in(X, Y, Z))
minus_in(X, 0, X) → minus_out(X, 0, X)
U2(X, Y, Z, minus_out(X, Y, Z)) → minus_out(s(X), s(Y), Z)
U5(X, Y, Z, minus_out(X, Y, U)) → U6(X, Y, Z, div_in(U, s(Y), Z))
U6(X, Y, Z, div_out(U, s(Y), Z)) → if_out(true, X, s(Y), s(Z))
if_in(false, X, s(Y), 0) → if_out(false, X, s(Y), 0)
U4(X, Y, Z, if_out(B, X, s(Y), Z)) → div_out(X, s(Y), Z)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
MINUS_IN(s(X), s(Y), Z) → MINUS_IN(X, Y, Z)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
MINUS_IN(s(X), s(Y)) → MINUS_IN(X, Y)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PrologToPiTRSProof
LE_IN(s(X), s(Y), B) → LE_IN(X, Y, B)
div_in(X, s(Y), Z) → U3(X, Y, Z, le_in(s(Y), X, B))
le_in(s(X), s(Y), B) → U1(X, Y, B, le_in(X, Y, B))
le_in(s(X), 0, false) → le_out(s(X), 0, false)
le_in(0, Y, true) → le_out(0, Y, true)
U1(X, Y, B, le_out(X, Y, B)) → le_out(s(X), s(Y), B)
U3(X, Y, Z, le_out(s(Y), X, B)) → U4(X, Y, Z, if_in(B, X, s(Y), Z))
if_in(true, X, s(Y), s(Z)) → U5(X, Y, Z, minus_in(X, Y, U))
minus_in(s(X), s(Y), Z) → U2(X, Y, Z, minus_in(X, Y, Z))
minus_in(X, 0, X) → minus_out(X, 0, X)
U2(X, Y, Z, minus_out(X, Y, Z)) → minus_out(s(X), s(Y), Z)
U5(X, Y, Z, minus_out(X, Y, U)) → U6(X, Y, Z, div_in(U, s(Y), Z))
U6(X, Y, Z, div_out(U, s(Y), Z)) → if_out(true, X, s(Y), s(Z))
if_in(false, X, s(Y), 0) → if_out(false, X, s(Y), 0)
U4(X, Y, Z, if_out(B, X, s(Y), Z)) → div_out(X, s(Y), Z)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PrologToPiTRSProof
LE_IN(s(X), s(Y), B) → LE_IN(X, Y, B)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PrologToPiTRSProof
LE_IN(s(X), s(Y)) → LE_IN(X, Y)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PrologToPiTRSProof
IF_IN(true, X, s(Y), s(Z)) → U51(X, Y, Z, minus_in(X, Y, U))
U31(X, Y, Z, le_out(s(Y), X, B)) → IF_IN(B, X, s(Y), Z)
U51(X, Y, Z, minus_out(X, Y, U)) → DIV_IN(U, s(Y), Z)
DIV_IN(X, s(Y), Z) → U31(X, Y, Z, le_in(s(Y), X, B))
div_in(X, s(Y), Z) → U3(X, Y, Z, le_in(s(Y), X, B))
le_in(s(X), s(Y), B) → U1(X, Y, B, le_in(X, Y, B))
le_in(s(X), 0, false) → le_out(s(X), 0, false)
le_in(0, Y, true) → le_out(0, Y, true)
U1(X, Y, B, le_out(X, Y, B)) → le_out(s(X), s(Y), B)
U3(X, Y, Z, le_out(s(Y), X, B)) → U4(X, Y, Z, if_in(B, X, s(Y), Z))
if_in(true, X, s(Y), s(Z)) → U5(X, Y, Z, minus_in(X, Y, U))
minus_in(s(X), s(Y), Z) → U2(X, Y, Z, minus_in(X, Y, Z))
minus_in(X, 0, X) → minus_out(X, 0, X)
U2(X, Y, Z, minus_out(X, Y, Z)) → minus_out(s(X), s(Y), Z)
U5(X, Y, Z, minus_out(X, Y, U)) → U6(X, Y, Z, div_in(U, s(Y), Z))
U6(X, Y, Z, div_out(U, s(Y), Z)) → if_out(true, X, s(Y), s(Z))
if_in(false, X, s(Y), 0) → if_out(false, X, s(Y), 0)
U4(X, Y, Z, if_out(B, X, s(Y), Z)) → div_out(X, s(Y), Z)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PrologToPiTRSProof
IF_IN(true, X, s(Y), s(Z)) → U51(X, Y, Z, minus_in(X, Y, U))
U31(X, Y, Z, le_out(s(Y), X, B)) → IF_IN(B, X, s(Y), Z)
U51(X, Y, Z, minus_out(X, Y, U)) → DIV_IN(U, s(Y), Z)
DIV_IN(X, s(Y), Z) → U31(X, Y, Z, le_in(s(Y), X, B))
minus_in(s(X), s(Y), Z) → U2(X, Y, Z, minus_in(X, Y, Z))
minus_in(X, 0, X) → minus_out(X, 0, X)
le_in(s(X), s(Y), B) → U1(X, Y, B, le_in(X, Y, B))
le_in(s(X), 0, false) → le_out(s(X), 0, false)
U2(X, Y, Z, minus_out(X, Y, Z)) → minus_out(s(X), s(Y), Z)
U1(X, Y, B, le_out(X, Y, B)) → le_out(s(X), s(Y), B)
le_in(0, Y, true) → le_out(0, Y, true)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ PrologToPiTRSProof
DIV_IN(X, s(Y)) → U31(X, Y, le_in(s(Y), X))
U51(Y, minus_out(U)) → DIV_IN(U, s(Y))
U31(X, Y, le_out(B)) → IF_IN(B, X, s(Y))
IF_IN(true, X, s(Y)) → U51(Y, minus_in(X, Y))
minus_in(s(X), s(Y)) → U2(minus_in(X, Y))
minus_in(X, 0) → minus_out(X)
le_in(s(X), s(Y)) → U1(le_in(X, Y))
le_in(s(X), 0) → le_out(false)
U2(minus_out(Z)) → minus_out(Z)
U1(le_out(B)) → le_out(B)
le_in(0, Y) → le_out(true)
minus_in(x0, x1)
le_in(x0, x1)
U2(x0)
U1(x0)
IF_IN(true, x0, s(0)) → U51(0, minus_out(x0))
IF_IN(true, s(x0), s(s(x1))) → U51(s(x1), U2(minus_in(x0, x1)))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ PrologToPiTRSProof
DIV_IN(X, s(Y)) → U31(X, Y, le_in(s(Y), X))
U51(Y, minus_out(U)) → DIV_IN(U, s(Y))
U31(X, Y, le_out(B)) → IF_IN(B, X, s(Y))
IF_IN(true, s(x0), s(s(x1))) → U51(s(x1), U2(minus_in(x0, x1)))
IF_IN(true, x0, s(0)) → U51(0, minus_out(x0))
minus_in(s(X), s(Y)) → U2(minus_in(X, Y))
minus_in(X, 0) → minus_out(X)
le_in(s(X), s(Y)) → U1(le_in(X, Y))
le_in(s(X), 0) → le_out(false)
U2(minus_out(Z)) → minus_out(Z)
U1(le_out(B)) → le_out(B)
le_in(0, Y) → le_out(true)
minus_in(x0, x1)
le_in(x0, x1)
U2(x0)
U1(x0)
DIV_IN(s(x1), s(x0)) → U31(s(x1), x0, U1(le_in(x0, x1)))
DIV_IN(0, s(x0)) → U31(0, x0, le_out(false))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Instantiation
↳ PrologToPiTRSProof
DIV_IN(s(x1), s(x0)) → U31(s(x1), x0, U1(le_in(x0, x1)))
U51(Y, minus_out(U)) → DIV_IN(U, s(Y))
U31(X, Y, le_out(B)) → IF_IN(B, X, s(Y))
DIV_IN(0, s(x0)) → U31(0, x0, le_out(false))
IF_IN(true, x0, s(0)) → U51(0, minus_out(x0))
IF_IN(true, s(x0), s(s(x1))) → U51(s(x1), U2(minus_in(x0, x1)))
minus_in(s(X), s(Y)) → U2(minus_in(X, Y))
minus_in(X, 0) → minus_out(X)
le_in(s(X), s(Y)) → U1(le_in(X, Y))
le_in(s(X), 0) → le_out(false)
U2(minus_out(Z)) → minus_out(Z)
U1(le_out(B)) → le_out(B)
le_in(0, Y) → le_out(true)
minus_in(x0, x1)
le_in(x0, x1)
U2(x0)
U1(x0)
U31(s(z0), z1, le_out(x2)) → IF_IN(x2, s(z0), s(z1))
U31(0, z0, le_out(false)) → IF_IN(false, 0, s(z0))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Instantiation
↳ QDP
↳ DependencyGraphProof
↳ PrologToPiTRSProof
U31(s(z0), z1, le_out(x2)) → IF_IN(x2, s(z0), s(z1))
DIV_IN(s(x1), s(x0)) → U31(s(x1), x0, U1(le_in(x0, x1)))
U51(Y, minus_out(U)) → DIV_IN(U, s(Y))
U31(0, z0, le_out(false)) → IF_IN(false, 0, s(z0))
IF_IN(true, s(x0), s(s(x1))) → U51(s(x1), U2(minus_in(x0, x1)))
IF_IN(true, x0, s(0)) → U51(0, minus_out(x0))
DIV_IN(0, s(x0)) → U31(0, x0, le_out(false))
minus_in(s(X), s(Y)) → U2(minus_in(X, Y))
minus_in(X, 0) → minus_out(X)
le_in(s(X), s(Y)) → U1(le_in(X, Y))
le_in(s(X), 0) → le_out(false)
U2(minus_out(Z)) → minus_out(Z)
U1(le_out(B)) → le_out(B)
le_in(0, Y) → le_out(true)
minus_in(x0, x1)
le_in(x0, x1)
U2(x0)
U1(x0)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Instantiation
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ PrologToPiTRSProof
U31(s(z0), z1, le_out(x2)) → IF_IN(x2, s(z0), s(z1))
DIV_IN(s(x1), s(x0)) → U31(s(x1), x0, U1(le_in(x0, x1)))
U51(Y, minus_out(U)) → DIV_IN(U, s(Y))
IF_IN(true, s(x0), s(s(x1))) → U51(s(x1), U2(minus_in(x0, x1)))
IF_IN(true, x0, s(0)) → U51(0, minus_out(x0))
minus_in(s(X), s(Y)) → U2(minus_in(X, Y))
minus_in(X, 0) → minus_out(X)
le_in(s(X), s(Y)) → U1(le_in(X, Y))
le_in(s(X), 0) → le_out(false)
U2(minus_out(Z)) → minus_out(Z)
U1(le_out(B)) → le_out(B)
le_in(0, Y) → le_out(true)
minus_in(x0, x1)
le_in(x0, x1)
U2(x0)
U1(x0)
IF_IN(true, s(z0), s(0)) → U51(0, minus_out(s(z0)))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Instantiation
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ PrologToPiTRSProof
DIV_IN(s(x1), s(x0)) → U31(s(x1), x0, U1(le_in(x0, x1)))
U31(s(z0), z1, le_out(x2)) → IF_IN(x2, s(z0), s(z1))
U51(Y, minus_out(U)) → DIV_IN(U, s(Y))
IF_IN(true, s(x0), s(s(x1))) → U51(s(x1), U2(minus_in(x0, x1)))
IF_IN(true, s(z0), s(0)) → U51(0, minus_out(s(z0)))
minus_in(s(X), s(Y)) → U2(minus_in(X, Y))
minus_in(X, 0) → minus_out(X)
le_in(s(X), s(Y)) → U1(le_in(X, Y))
le_in(s(X), 0) → le_out(false)
U2(minus_out(Z)) → minus_out(Z)
U1(le_out(B)) → le_out(B)
le_in(0, Y) → le_out(true)
minus_in(x0, x1)
le_in(x0, x1)
U2(x0)
U1(x0)
U51(0, minus_out(s(z0))) → DIV_IN(s(z0), s(0))
U51(s(z1), minus_out(x1)) → DIV_IN(x1, s(s(z1)))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Instantiation
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ PrologToPiTRSProof
U31(s(z0), z1, le_out(x2)) → IF_IN(x2, s(z0), s(z1))
DIV_IN(s(x1), s(x0)) → U31(s(x1), x0, U1(le_in(x0, x1)))
U51(0, minus_out(s(z0))) → DIV_IN(s(z0), s(0))
IF_IN(true, s(x0), s(s(x1))) → U51(s(x1), U2(minus_in(x0, x1)))
U51(s(z1), minus_out(x1)) → DIV_IN(x1, s(s(z1)))
IF_IN(true, s(z0), s(0)) → U51(0, minus_out(s(z0)))
minus_in(s(X), s(Y)) → U2(minus_in(X, Y))
minus_in(X, 0) → minus_out(X)
le_in(s(X), s(Y)) → U1(le_in(X, Y))
le_in(s(X), 0) → le_out(false)
U2(minus_out(Z)) → minus_out(Z)
U1(le_out(B)) → le_out(B)
le_in(0, Y) → le_out(true)
minus_in(x0, x1)
le_in(x0, x1)
U2(x0)
U1(x0)
DIV_IN(s(z0), s(0)) → U31(s(z0), 0, U1(le_in(0, z0)))
DIV_IN(s(x0), s(s(z0))) → U31(s(x0), s(z0), U1(le_in(s(z0), x0)))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Instantiation
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ PrologToPiTRSProof
DIV_IN(s(z0), s(0)) → U31(s(z0), 0, U1(le_in(0, z0)))
U31(s(z0), z1, le_out(x2)) → IF_IN(x2, s(z0), s(z1))
U51(0, minus_out(s(z0))) → DIV_IN(s(z0), s(0))
DIV_IN(s(x0), s(s(z0))) → U31(s(x0), s(z0), U1(le_in(s(z0), x0)))
IF_IN(true, s(x0), s(s(x1))) → U51(s(x1), U2(minus_in(x0, x1)))
IF_IN(true, s(z0), s(0)) → U51(0, minus_out(s(z0)))
U51(s(z1), minus_out(x1)) → DIV_IN(x1, s(s(z1)))
minus_in(s(X), s(Y)) → U2(minus_in(X, Y))
minus_in(X, 0) → minus_out(X)
le_in(s(X), s(Y)) → U1(le_in(X, Y))
le_in(s(X), 0) → le_out(false)
U2(minus_out(Z)) → minus_out(Z)
U1(le_out(B)) → le_out(B)
le_in(0, Y) → le_out(true)
minus_in(x0, x1)
le_in(x0, x1)
U2(x0)
U1(x0)
DIV_IN(s(z0), s(0)) → U31(s(z0), 0, U1(le_out(true)))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Instantiation
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ PrologToPiTRSProof
U31(s(z0), z1, le_out(x2)) → IF_IN(x2, s(z0), s(z1))
DIV_IN(s(z0), s(0)) → U31(s(z0), 0, U1(le_out(true)))
U51(0, minus_out(s(z0))) → DIV_IN(s(z0), s(0))
DIV_IN(s(x0), s(s(z0))) → U31(s(x0), s(z0), U1(le_in(s(z0), x0)))
IF_IN(true, s(x0), s(s(x1))) → U51(s(x1), U2(minus_in(x0, x1)))
U51(s(z1), minus_out(x1)) → DIV_IN(x1, s(s(z1)))
IF_IN(true, s(z0), s(0)) → U51(0, minus_out(s(z0)))
minus_in(s(X), s(Y)) → U2(minus_in(X, Y))
minus_in(X, 0) → minus_out(X)
le_in(s(X), s(Y)) → U1(le_in(X, Y))
le_in(s(X), 0) → le_out(false)
U2(minus_out(Z)) → minus_out(Z)
U1(le_out(B)) → le_out(B)
le_in(0, Y) → le_out(true)
minus_in(x0, x1)
le_in(x0, x1)
U2(x0)
U1(x0)
DIV_IN(s(z0), s(0)) → U31(s(z0), 0, le_out(true))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Instantiation
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ PrologToPiTRSProof
U31(s(z0), z1, le_out(x2)) → IF_IN(x2, s(z0), s(z1))
DIV_IN(s(z0), s(0)) → U31(s(z0), 0, le_out(true))
U51(0, minus_out(s(z0))) → DIV_IN(s(z0), s(0))
DIV_IN(s(x0), s(s(z0))) → U31(s(x0), s(z0), U1(le_in(s(z0), x0)))
IF_IN(true, s(x0), s(s(x1))) → U51(s(x1), U2(minus_in(x0, x1)))
IF_IN(true, s(z0), s(0)) → U51(0, minus_out(s(z0)))
U51(s(z1), minus_out(x1)) → DIV_IN(x1, s(s(z1)))
minus_in(s(X), s(Y)) → U2(minus_in(X, Y))
minus_in(X, 0) → minus_out(X)
le_in(s(X), s(Y)) → U1(le_in(X, Y))
le_in(s(X), 0) → le_out(false)
U2(minus_out(Z)) → minus_out(Z)
U1(le_out(B)) → le_out(B)
le_in(0, Y) → le_out(true)
minus_in(x0, x1)
le_in(x0, x1)
U2(x0)
U1(x0)
U31(s(z0), s(z1), le_out(x2)) → IF_IN(x2, s(z0), s(s(z1)))
U31(s(z0), 0, le_out(true)) → IF_IN(true, s(z0), s(0))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Instantiation
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ DependencyGraphProof
↳ PrologToPiTRSProof
U31(s(z0), s(z1), le_out(x2)) → IF_IN(x2, s(z0), s(s(z1)))
DIV_IN(s(z0), s(0)) → U31(s(z0), 0, le_out(true))
U31(s(z0), 0, le_out(true)) → IF_IN(true, s(z0), s(0))
U51(0, minus_out(s(z0))) → DIV_IN(s(z0), s(0))
DIV_IN(s(x0), s(s(z0))) → U31(s(x0), s(z0), U1(le_in(s(z0), x0)))
IF_IN(true, s(x0), s(s(x1))) → U51(s(x1), U2(minus_in(x0, x1)))
U51(s(z1), minus_out(x1)) → DIV_IN(x1, s(s(z1)))
IF_IN(true, s(z0), s(0)) → U51(0, minus_out(s(z0)))
minus_in(s(X), s(Y)) → U2(minus_in(X, Y))
minus_in(X, 0) → minus_out(X)
le_in(s(X), s(Y)) → U1(le_in(X, Y))
le_in(s(X), 0) → le_out(false)
U2(minus_out(Z)) → minus_out(Z)
U1(le_out(B)) → le_out(B)
le_in(0, Y) → le_out(true)
minus_in(x0, x1)
le_in(x0, x1)
U2(x0)
U1(x0)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Instantiation
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ PrologToPiTRSProof
DIV_IN(s(z0), s(0)) → U31(s(z0), 0, le_out(true))
U31(s(z0), 0, le_out(true)) → IF_IN(true, s(z0), s(0))
U51(0, minus_out(s(z0))) → DIV_IN(s(z0), s(0))
IF_IN(true, s(z0), s(0)) → U51(0, minus_out(s(z0)))
minus_in(s(X), s(Y)) → U2(minus_in(X, Y))
minus_in(X, 0) → minus_out(X)
le_in(s(X), s(Y)) → U1(le_in(X, Y))
le_in(s(X), 0) → le_out(false)
U2(minus_out(Z)) → minus_out(Z)
U1(le_out(B)) → le_out(B)
le_in(0, Y) → le_out(true)
minus_in(x0, x1)
le_in(x0, x1)
U2(x0)
U1(x0)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Instantiation
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ PrologToPiTRSProof
DIV_IN(s(z0), s(0)) → U31(s(z0), 0, le_out(true))
U31(s(z0), 0, le_out(true)) → IF_IN(true, s(z0), s(0))
U51(0, minus_out(s(z0))) → DIV_IN(s(z0), s(0))
IF_IN(true, s(z0), s(0)) → U51(0, minus_out(s(z0)))
minus_in(x0, x1)
le_in(x0, x1)
U2(x0)
U1(x0)
minus_in(x0, x1)
le_in(x0, x1)
U2(x0)
U1(x0)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Instantiation
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonTerminationProof
↳ QDP
↳ PrologToPiTRSProof
DIV_IN(s(z0), s(0)) → U31(s(z0), 0, le_out(true))
U31(s(z0), 0, le_out(true)) → IF_IN(true, s(z0), s(0))
U51(0, minus_out(s(z0))) → DIV_IN(s(z0), s(0))
IF_IN(true, s(z0), s(0)) → U51(0, minus_out(s(z0)))
DIV_IN(s(z0), s(0)) → U31(s(z0), 0, le_out(true))
U31(s(z0), 0, le_out(true)) → IF_IN(true, s(z0), s(0))
U51(0, minus_out(s(z0))) → DIV_IN(s(z0), s(0))
IF_IN(true, s(z0), s(0)) → U51(0, minus_out(s(z0)))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Instantiation
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ ForwardInstantiation
↳ PrologToPiTRSProof
U31(s(z0), s(z1), le_out(x2)) → IF_IN(x2, s(z0), s(s(z1)))
DIV_IN(s(x0), s(s(z0))) → U31(s(x0), s(z0), U1(le_in(s(z0), x0)))
IF_IN(true, s(x0), s(s(x1))) → U51(s(x1), U2(minus_in(x0, x1)))
U51(s(z1), minus_out(x1)) → DIV_IN(x1, s(s(z1)))
minus_in(s(X), s(Y)) → U2(minus_in(X, Y))
minus_in(X, 0) → minus_out(X)
le_in(s(X), s(Y)) → U1(le_in(X, Y))
le_in(s(X), 0) → le_out(false)
U2(minus_out(Z)) → minus_out(Z)
U1(le_out(B)) → le_out(B)
le_in(0, Y) → le_out(true)
minus_in(x0, x1)
le_in(x0, x1)
U2(x0)
U1(x0)
U51(s(x0), minus_out(s(y_0))) → DIV_IN(s(y_0), s(s(x0)))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Instantiation
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ PrologToPiTRSProof
U31(s(z0), s(z1), le_out(x2)) → IF_IN(x2, s(z0), s(s(z1)))
U51(s(x0), minus_out(s(y_0))) → DIV_IN(s(y_0), s(s(x0)))
DIV_IN(s(x0), s(s(z0))) → U31(s(x0), s(z0), U1(le_in(s(z0), x0)))
IF_IN(true, s(x0), s(s(x1))) → U51(s(x1), U2(minus_in(x0, x1)))
minus_in(s(X), s(Y)) → U2(minus_in(X, Y))
minus_in(X, 0) → minus_out(X)
le_in(s(X), s(Y)) → U1(le_in(X, Y))
le_in(s(X), 0) → le_out(false)
U2(minus_out(Z)) → minus_out(Z)
U1(le_out(B)) → le_out(B)
le_in(0, Y) → le_out(true)
minus_in(x0, x1)
le_in(x0, x1)
U2(x0)
U1(x0)
U31(s(x0), s(x1), le_out(true)) → IF_IN(true, s(x0), s(s(x1)))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Instantiation
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ QDPOrderProof
↳ PrologToPiTRSProof
U31(s(x0), s(x1), le_out(true)) → IF_IN(true, s(x0), s(s(x1)))
U51(s(x0), minus_out(s(y_0))) → DIV_IN(s(y_0), s(s(x0)))
DIV_IN(s(x0), s(s(z0))) → U31(s(x0), s(z0), U1(le_in(s(z0), x0)))
IF_IN(true, s(x0), s(s(x1))) → U51(s(x1), U2(minus_in(x0, x1)))
minus_in(s(X), s(Y)) → U2(minus_in(X, Y))
minus_in(X, 0) → minus_out(X)
le_in(s(X), s(Y)) → U1(le_in(X, Y))
le_in(s(X), 0) → le_out(false)
U2(minus_out(Z)) → minus_out(Z)
U1(le_out(B)) → le_out(B)
le_in(0, Y) → le_out(true)
minus_in(x0, x1)
le_in(x0, x1)
U2(x0)
U1(x0)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
IF_IN(true, s(x0), s(s(x1))) → U51(s(x1), U2(minus_in(x0, x1)))
Used ordering: Polynomial interpretation [25]:
U31(s(x0), s(x1), le_out(true)) → IF_IN(true, s(x0), s(s(x1)))
U51(s(x0), minus_out(s(y_0))) → DIV_IN(s(y_0), s(s(x0)))
DIV_IN(s(x0), s(s(z0))) → U31(s(x0), s(z0), U1(le_in(s(z0), x0)))
POL(0) = 0
POL(DIV_IN(x1, x2)) = 1 + x1 + x2
POL(IF_IN(x1, x2, x3)) = 1 + x2 + x3
POL(U1(x1)) = 1
POL(U2(x1)) = x1
POL(U31(x1, x2, x3)) = 1 + x1 + x2 + x3
POL(U51(x1, x2)) = 1 + x1 + x2
POL(false) = 0
POL(le_in(x1, x2)) = 0
POL(le_out(x1)) = 1
POL(minus_in(x1, x2)) = 1 + x1
POL(minus_out(x1)) = 1 + x1
POL(s(x1)) = 1 + x1
POL(true) = 0
U2(minus_out(Z)) → minus_out(Z)
minus_in(s(X), s(Y)) → U2(minus_in(X, Y))
minus_in(X, 0) → minus_out(X)
U1(le_out(B)) → le_out(B)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Instantiation
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
↳ PrologToPiTRSProof
U31(s(x0), s(x1), le_out(true)) → IF_IN(true, s(x0), s(s(x1)))
U51(s(x0), minus_out(s(y_0))) → DIV_IN(s(y_0), s(s(x0)))
DIV_IN(s(x0), s(s(z0))) → U31(s(x0), s(z0), U1(le_in(s(z0), x0)))
minus_in(s(X), s(Y)) → U2(minus_in(X, Y))
minus_in(X, 0) → minus_out(X)
le_in(s(X), s(Y)) → U1(le_in(X, Y))
le_in(s(X), 0) → le_out(false)
U2(minus_out(Z)) → minus_out(Z)
U1(le_out(B)) → le_out(B)
le_in(0, Y) → le_out(true)
minus_in(x0, x1)
le_in(x0, x1)
U2(x0)
U1(x0)
div_in(X, s(Y), Z) → U3(X, Y, Z, le_in(s(Y), X, B))
le_in(s(X), s(Y), B) → U1(X, Y, B, le_in(X, Y, B))
le_in(s(X), 0, false) → le_out(s(X), 0, false)
le_in(0, Y, true) → le_out(0, Y, true)
U1(X, Y, B, le_out(X, Y, B)) → le_out(s(X), s(Y), B)
U3(X, Y, Z, le_out(s(Y), X, B)) → U4(X, Y, Z, if_in(B, X, s(Y), Z))
if_in(true, X, s(Y), s(Z)) → U5(X, Y, Z, minus_in(X, Y, U))
minus_in(s(X), s(Y), Z) → U2(X, Y, Z, minus_in(X, Y, Z))
minus_in(X, 0, X) → minus_out(X, 0, X)
U2(X, Y, Z, minus_out(X, Y, Z)) → minus_out(s(X), s(Y), Z)
U5(X, Y, Z, minus_out(X, Y, U)) → U6(X, Y, Z, div_in(U, s(Y), Z))
U6(X, Y, Z, div_out(U, s(Y), Z)) → if_out(true, X, s(Y), s(Z))
if_in(false, X, s(Y), 0) → if_out(false, X, s(Y), 0)
U4(X, Y, Z, if_out(B, X, s(Y), Z)) → div_out(X, s(Y), Z)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
div_in(X, s(Y), Z) → U3(X, Y, Z, le_in(s(Y), X, B))
le_in(s(X), s(Y), B) → U1(X, Y, B, le_in(X, Y, B))
le_in(s(X), 0, false) → le_out(s(X), 0, false)
le_in(0, Y, true) → le_out(0, Y, true)
U1(X, Y, B, le_out(X, Y, B)) → le_out(s(X), s(Y), B)
U3(X, Y, Z, le_out(s(Y), X, B)) → U4(X, Y, Z, if_in(B, X, s(Y), Z))
if_in(true, X, s(Y), s(Z)) → U5(X, Y, Z, minus_in(X, Y, U))
minus_in(s(X), s(Y), Z) → U2(X, Y, Z, minus_in(X, Y, Z))
minus_in(X, 0, X) → minus_out(X, 0, X)
U2(X, Y, Z, minus_out(X, Y, Z)) → minus_out(s(X), s(Y), Z)
U5(X, Y, Z, minus_out(X, Y, U)) → U6(X, Y, Z, div_in(U, s(Y), Z))
U6(X, Y, Z, div_out(U, s(Y), Z)) → if_out(true, X, s(Y), s(Z))
if_in(false, X, s(Y), 0) → if_out(false, X, s(Y), 0)
U4(X, Y, Z, if_out(B, X, s(Y), Z)) → div_out(X, s(Y), Z)
DIV_IN(X, s(Y), Z) → U31(X, Y, Z, le_in(s(Y), X, B))
DIV_IN(X, s(Y), Z) → LE_IN(s(Y), X, B)
LE_IN(s(X), s(Y), B) → U11(X, Y, B, le_in(X, Y, B))
LE_IN(s(X), s(Y), B) → LE_IN(X, Y, B)
U31(X, Y, Z, le_out(s(Y), X, B)) → U41(X, Y, Z, if_in(B, X, s(Y), Z))
U31(X, Y, Z, le_out(s(Y), X, B)) → IF_IN(B, X, s(Y), Z)
IF_IN(true, X, s(Y), s(Z)) → U51(X, Y, Z, minus_in(X, Y, U))
IF_IN(true, X, s(Y), s(Z)) → MINUS_IN(X, Y, U)
MINUS_IN(s(X), s(Y), Z) → U21(X, Y, Z, minus_in(X, Y, Z))
MINUS_IN(s(X), s(Y), Z) → MINUS_IN(X, Y, Z)
U51(X, Y, Z, minus_out(X, Y, U)) → U61(X, Y, Z, div_in(U, s(Y), Z))
U51(X, Y, Z, minus_out(X, Y, U)) → DIV_IN(U, s(Y), Z)
div_in(X, s(Y), Z) → U3(X, Y, Z, le_in(s(Y), X, B))
le_in(s(X), s(Y), B) → U1(X, Y, B, le_in(X, Y, B))
le_in(s(X), 0, false) → le_out(s(X), 0, false)
le_in(0, Y, true) → le_out(0, Y, true)
U1(X, Y, B, le_out(X, Y, B)) → le_out(s(X), s(Y), B)
U3(X, Y, Z, le_out(s(Y), X, B)) → U4(X, Y, Z, if_in(B, X, s(Y), Z))
if_in(true, X, s(Y), s(Z)) → U5(X, Y, Z, minus_in(X, Y, U))
minus_in(s(X), s(Y), Z) → U2(X, Y, Z, minus_in(X, Y, Z))
minus_in(X, 0, X) → minus_out(X, 0, X)
U2(X, Y, Z, minus_out(X, Y, Z)) → minus_out(s(X), s(Y), Z)
U5(X, Y, Z, minus_out(X, Y, U)) → U6(X, Y, Z, div_in(U, s(Y), Z))
U6(X, Y, Z, div_out(U, s(Y), Z)) → if_out(true, X, s(Y), s(Z))
if_in(false, X, s(Y), 0) → if_out(false, X, s(Y), 0)
U4(X, Y, Z, if_out(B, X, s(Y), Z)) → div_out(X, s(Y), Z)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
DIV_IN(X, s(Y), Z) → U31(X, Y, Z, le_in(s(Y), X, B))
DIV_IN(X, s(Y), Z) → LE_IN(s(Y), X, B)
LE_IN(s(X), s(Y), B) → U11(X, Y, B, le_in(X, Y, B))
LE_IN(s(X), s(Y), B) → LE_IN(X, Y, B)
U31(X, Y, Z, le_out(s(Y), X, B)) → U41(X, Y, Z, if_in(B, X, s(Y), Z))
U31(X, Y, Z, le_out(s(Y), X, B)) → IF_IN(B, X, s(Y), Z)
IF_IN(true, X, s(Y), s(Z)) → U51(X, Y, Z, minus_in(X, Y, U))
IF_IN(true, X, s(Y), s(Z)) → MINUS_IN(X, Y, U)
MINUS_IN(s(X), s(Y), Z) → U21(X, Y, Z, minus_in(X, Y, Z))
MINUS_IN(s(X), s(Y), Z) → MINUS_IN(X, Y, Z)
U51(X, Y, Z, minus_out(X, Y, U)) → U61(X, Y, Z, div_in(U, s(Y), Z))
U51(X, Y, Z, minus_out(X, Y, U)) → DIV_IN(U, s(Y), Z)
div_in(X, s(Y), Z) → U3(X, Y, Z, le_in(s(Y), X, B))
le_in(s(X), s(Y), B) → U1(X, Y, B, le_in(X, Y, B))
le_in(s(X), 0, false) → le_out(s(X), 0, false)
le_in(0, Y, true) → le_out(0, Y, true)
U1(X, Y, B, le_out(X, Y, B)) → le_out(s(X), s(Y), B)
U3(X, Y, Z, le_out(s(Y), X, B)) → U4(X, Y, Z, if_in(B, X, s(Y), Z))
if_in(true, X, s(Y), s(Z)) → U5(X, Y, Z, minus_in(X, Y, U))
minus_in(s(X), s(Y), Z) → U2(X, Y, Z, minus_in(X, Y, Z))
minus_in(X, 0, X) → minus_out(X, 0, X)
U2(X, Y, Z, minus_out(X, Y, Z)) → minus_out(s(X), s(Y), Z)
U5(X, Y, Z, minus_out(X, Y, U)) → U6(X, Y, Z, div_in(U, s(Y), Z))
U6(X, Y, Z, div_out(U, s(Y), Z)) → if_out(true, X, s(Y), s(Z))
if_in(false, X, s(Y), 0) → if_out(false, X, s(Y), 0)
U4(X, Y, Z, if_out(B, X, s(Y), Z)) → div_out(X, s(Y), Z)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
MINUS_IN(s(X), s(Y), Z) → MINUS_IN(X, Y, Z)
div_in(X, s(Y), Z) → U3(X, Y, Z, le_in(s(Y), X, B))
le_in(s(X), s(Y), B) → U1(X, Y, B, le_in(X, Y, B))
le_in(s(X), 0, false) → le_out(s(X), 0, false)
le_in(0, Y, true) → le_out(0, Y, true)
U1(X, Y, B, le_out(X, Y, B)) → le_out(s(X), s(Y), B)
U3(X, Y, Z, le_out(s(Y), X, B)) → U4(X, Y, Z, if_in(B, X, s(Y), Z))
if_in(true, X, s(Y), s(Z)) → U5(X, Y, Z, minus_in(X, Y, U))
minus_in(s(X), s(Y), Z) → U2(X, Y, Z, minus_in(X, Y, Z))
minus_in(X, 0, X) → minus_out(X, 0, X)
U2(X, Y, Z, minus_out(X, Y, Z)) → minus_out(s(X), s(Y), Z)
U5(X, Y, Z, minus_out(X, Y, U)) → U6(X, Y, Z, div_in(U, s(Y), Z))
U6(X, Y, Z, div_out(U, s(Y), Z)) → if_out(true, X, s(Y), s(Z))
if_in(false, X, s(Y), 0) → if_out(false, X, s(Y), 0)
U4(X, Y, Z, if_out(B, X, s(Y), Z)) → div_out(X, s(Y), Z)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
MINUS_IN(s(X), s(Y), Z) → MINUS_IN(X, Y, Z)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PiDP
MINUS_IN(s(X), s(Y)) → MINUS_IN(X, Y)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
LE_IN(s(X), s(Y), B) → LE_IN(X, Y, B)
div_in(X, s(Y), Z) → U3(X, Y, Z, le_in(s(Y), X, B))
le_in(s(X), s(Y), B) → U1(X, Y, B, le_in(X, Y, B))
le_in(s(X), 0, false) → le_out(s(X), 0, false)
le_in(0, Y, true) → le_out(0, Y, true)
U1(X, Y, B, le_out(X, Y, B)) → le_out(s(X), s(Y), B)
U3(X, Y, Z, le_out(s(Y), X, B)) → U4(X, Y, Z, if_in(B, X, s(Y), Z))
if_in(true, X, s(Y), s(Z)) → U5(X, Y, Z, minus_in(X, Y, U))
minus_in(s(X), s(Y), Z) → U2(X, Y, Z, minus_in(X, Y, Z))
minus_in(X, 0, X) → minus_out(X, 0, X)
U2(X, Y, Z, minus_out(X, Y, Z)) → minus_out(s(X), s(Y), Z)
U5(X, Y, Z, minus_out(X, Y, U)) → U6(X, Y, Z, div_in(U, s(Y), Z))
U6(X, Y, Z, div_out(U, s(Y), Z)) → if_out(true, X, s(Y), s(Z))
if_in(false, X, s(Y), 0) → if_out(false, X, s(Y), 0)
U4(X, Y, Z, if_out(B, X, s(Y), Z)) → div_out(X, s(Y), Z)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
LE_IN(s(X), s(Y), B) → LE_IN(X, Y, B)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
LE_IN(s(X), s(Y)) → LE_IN(X, Y)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
IF_IN(true, X, s(Y), s(Z)) → U51(X, Y, Z, minus_in(X, Y, U))
U31(X, Y, Z, le_out(s(Y), X, B)) → IF_IN(B, X, s(Y), Z)
U51(X, Y, Z, minus_out(X, Y, U)) → DIV_IN(U, s(Y), Z)
DIV_IN(X, s(Y), Z) → U31(X, Y, Z, le_in(s(Y), X, B))
div_in(X, s(Y), Z) → U3(X, Y, Z, le_in(s(Y), X, B))
le_in(s(X), s(Y), B) → U1(X, Y, B, le_in(X, Y, B))
le_in(s(X), 0, false) → le_out(s(X), 0, false)
le_in(0, Y, true) → le_out(0, Y, true)
U1(X, Y, B, le_out(X, Y, B)) → le_out(s(X), s(Y), B)
U3(X, Y, Z, le_out(s(Y), X, B)) → U4(X, Y, Z, if_in(B, X, s(Y), Z))
if_in(true, X, s(Y), s(Z)) → U5(X, Y, Z, minus_in(X, Y, U))
minus_in(s(X), s(Y), Z) → U2(X, Y, Z, minus_in(X, Y, Z))
minus_in(X, 0, X) → minus_out(X, 0, X)
U2(X, Y, Z, minus_out(X, Y, Z)) → minus_out(s(X), s(Y), Z)
U5(X, Y, Z, minus_out(X, Y, U)) → U6(X, Y, Z, div_in(U, s(Y), Z))
U6(X, Y, Z, div_out(U, s(Y), Z)) → if_out(true, X, s(Y), s(Z))
if_in(false, X, s(Y), 0) → if_out(false, X, s(Y), 0)
U4(X, Y, Z, if_out(B, X, s(Y), Z)) → div_out(X, s(Y), Z)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
IF_IN(true, X, s(Y), s(Z)) → U51(X, Y, Z, minus_in(X, Y, U))
U31(X, Y, Z, le_out(s(Y), X, B)) → IF_IN(B, X, s(Y), Z)
U51(X, Y, Z, minus_out(X, Y, U)) → DIV_IN(U, s(Y), Z)
DIV_IN(X, s(Y), Z) → U31(X, Y, Z, le_in(s(Y), X, B))
minus_in(s(X), s(Y), Z) → U2(X, Y, Z, minus_in(X, Y, Z))
minus_in(X, 0, X) → minus_out(X, 0, X)
le_in(s(X), s(Y), B) → U1(X, Y, B, le_in(X, Y, B))
le_in(s(X), 0, false) → le_out(s(X), 0, false)
U2(X, Y, Z, minus_out(X, Y, Z)) → minus_out(s(X), s(Y), Z)
U1(X, Y, B, le_out(X, Y, B)) → le_out(s(X), s(Y), B)
le_in(0, Y, true) → le_out(0, Y, true)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
DIV_IN(X, s(Y)) → U31(X, Y, le_in(s(Y), X))
U51(X, Y, minus_out(X, Y, U)) → DIV_IN(U, s(Y))
IF_IN(true, X, s(Y)) → U51(X, Y, minus_in(X, Y))
U31(X, Y, le_out(s(Y), X, B)) → IF_IN(B, X, s(Y))
minus_in(s(X), s(Y)) → U2(X, Y, minus_in(X, Y))
minus_in(X, 0) → minus_out(X, 0, X)
le_in(s(X), s(Y)) → U1(X, Y, le_in(X, Y))
le_in(s(X), 0) → le_out(s(X), 0, false)
U2(X, Y, minus_out(X, Y, Z)) → minus_out(s(X), s(Y), Z)
U1(X, Y, le_out(X, Y, B)) → le_out(s(X), s(Y), B)
le_in(0, Y) → le_out(0, Y, true)
minus_in(x0, x1)
le_in(x0, x1)
U2(x0, x1, x2)
U1(x0, x1, x2)